cmake_minimum_required(VERSION 3.10)

if(NOT CMAKE_BUILD_TYPE)
    set(CMAKE_BUILD_TYPE Release CACHE STRING "Chosse the type of build, Debug or Release" FORCE)
endif()

project(design-pattern-cpp VERSION 1.0)

set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/output/lib)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/output/lib)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/output)

add_subdirectory(AbstractFactory)
add_subdirectory(Adapter)
add_subdirectory(Bridge)
add_subdirectory(Builder)
add_subdirectory(ChainOfResponsibility)
add_subdirectory(Command)
add_subdirectory(Composite)
add_subdirectory(Decorator)
add_subdirectory(Facade)
add_subdirectory(Factory)
add_subdirectory(Flyweight)
add_subdirectory(Interpreter)
add_subdirectory(Iterator)
add_subdirectory(Mediator)
add_subdirectory(Memento)
add_subdirectory(Observer)
add_subdirectory(Prototype)
add_subdirectory(Proxy)
add_subdirectory(Singleton)
add_subdirectory(State)
add_subdirectory(Strategy)
add_subdirectory(Template)
add_subdirectory(Visitor)
